package com.itcast.googleplay.holder;

import android.view.View;

public abstract class BaseHolder<T>{
	private View convertView;
	private T data;

	//1.创建BaseHolder构造方法,创建对象
	public BaseHolder(){
		//2.生成convertView对象,xml----->view,
		//因为listView项目中有多个每一个listView的item的布局都是未知的,所以无法做具体的view.inflate(context,布局未知,null)
		//所以此方法抽象
		convertView = initView();
		//3.给convertView设置holder
		convertView.setTag(this);
	}
	
	//4.提供listView一个条目需要用到的数据源,因为listView在项目中有多个,条目类型都会不一样,那需要填充此条目的数据源有差异,所以用泛型代表数据源类型
	public void setData(T data){
		this.data = data;
		initData();
	}
	
	public T getData(){
		return data;
	}
	
	//提供一个返回convertView方法
	public View getConvertView(){
		return convertView;
	}
	
	//把data中的数据赋给convertView中的控件,data里面有什么?convertView中有什么控件?
	//所以赋值的具体操作未知,所以抽象
	public abstract void initData() ;

	public abstract View initView() ;
}
